# 从app.py文件导入必要的对象
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from app.utils.logger import setup_logger
from app.utils.redis_config import RedisClient

# 创建Flask应用实例
app = Flask(__name__)

# 配置应用
app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'dev_secret_key')
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', 'sqlite:///vulnerability_scanner.db')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# 邮件配置
app.config['MAIL_SERVER'] = os.environ.get('MAIL_SERVER', 'smtp.example.com')
app.config['MAIL_PORT'] = int(os.environ.get('MAIL_PORT', 587))
app.config['MAIL_USE_TLS'] = os.environ.get('MAIL_USE_TLS', 'True').lower() == 'true'
app.config['MAIL_USE_SSL'] = os.environ.get('MAIL_USE_SSL', 'False').lower() == 'true'
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME', 'security-scanner@example.com')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD', 'your_email_password')
app.config['MAIL_DEFAULT_SENDER'] = os.environ.get('MAIL_DEFAULT_SENDER', 'security-scanner@example.com')

# 管理员邮箱（用于接收高危漏洞警报）
app.config['ADMIN_EMAIL'] = os.environ.get('ADMIN_EMAIL', 'admin@example.com')

# 初始化数据库
db = SQLAlchemy(app)

# 初始化Redis客户端
redis_client = RedisClient()

# 设置日志
logger = setup_logger()

# 导入路由，处理可能的依赖问题
try:
    # 尝试导入完整的路由模块
    from app.api import routes
    print("✓ 成功导入完整的API路由模块")
except ImportError as e:
    print(f"⚠ 警告: 无法导入完整API路由模块: {e}")
    print("ℹ 正在设置简化版功能...")
    # 不导入路由，让app.py中的错误处理逻辑接管
    pass

# 导出公共对象
__all__ = ['app', 'db', 'redis_client', 'logger']